import { setToken, removeToken, getToken } from '@/utils/auth.js'
import { userLogin, userInfo } from '@/api/user.js'
import { constantRoutes } from '@/router/index.js'
import { resetRouter } from '@/router'
const state = {
  token: getToken(), // 本地拿token
  userInfo: '', // 用户信息
  // 添加的路由不具备响应式 所以在仓库 添加router 创建一个响应式
  routes: constantRoutes // 左侧菜单栏bug修改
}

const mutations = {
  // 设置 token
  SetToken(state, token) {
    state.token = token // 仓库存储token
    setToken(token) // 本地同步缓存token
  },
  RemoveToken(state) {
    state.token = null // 清除本地token
    removeToken() // 清除本地同步缓存token
  },
  // 设置用户信息
  SetuserInfo(state, info) {
    state.userInfo = info
  },

  // 设置路由(左侧菜单栏)
  SetRoutes(state, newRoutes) {
    state.routes = [...constantRoutes, ...newRoutes] // 静态路由 + 动态路由
  }
}

const actions = {
  // 登陆用户
  async submitLogin(context, data) {
    const token = await userLogin(data)
    context.commit('SetToken', token)
  },
  // 获取用户基本信息
  async getUserInfo(context) {
    const res = await userInfo()
    context.commit('SetuserInfo', res)
    return res
  },
  // 退出登录
  async logout(context) {
    context.commit('RemoveToken', '') // 清空仓库token 和本地缓存token
    context.commit('SetuserInfo', '') // 清空仓库基本用户信息
    // 重置路由
    resetRouter()
  }
}

export default {
  namespaced: true, // 开启命名空间
  state,
  mutations,
  actions
}

